// 霓虹效果：用来描绘图像的轮廓，勾画颜色变化的边缘，加强其过度效果，产生轮廓发光的效果。
// 主要是根据当前像素与其右方和下方像素的梯度运算，然后将结果值作为当前像素值，
// 即将原图像当前像素的R、G、B分量与其右方和下方像素做梯度运算(差的平方和的平方根)，
// 然后将梯度值作为处理后像素的R、G、B的三个分量。
// [ result = Math.Sqrt( (src-right)*(src-right) + (src-bottom)*(src-bottom) ) ]
const neon = function (imageData) {
    var data = imageData.data,
        width = imageData.width;
    for (var i = 0; i < data.length; i++) {
        if ((i + 1) % 4 !== 0) {
            data[i] = Math.sqrt((data[i] - data[i + 4]) * (data[i] - data[i + 4]) +
            (data[i] - data[i + width * 4]) * (data[i] - data[i + width * 4]));
        }
    }
    return imageData;
}

export default neon;